In the field of computer technology, as microprocessors employing advanced processing architectures capable of greater computing power have been developed, both operating system software and application software have also been developed which take advantage of and, in many cases require, such increased power. Much of this advanced software development has been for the purpose of increasing the `user friendliness` of computers through the deployment of software having a more intuitive Graphic User Interface (GUI). The use of GUI's has been steadily increasing on almost every processing platform including Windows (in each of its various flavors) for the IBM-PC and System 7 for the Apple Macintosh computer. In addition, there has also been developed a class of GUI's which are not computer specific, but are rather network based display architectures. One such example of a current popular network based display architecture is the X-Window system developed at MIT and currently in release 11, (heretofore known as X11). X11 is particularly well regarded for its network transparency; network independence; device independence; and flexible user interface. In addition X11 is non-proprietary, and while it is most frequently run on UNIX computers, is also widely available to run on a wide range of other computer systems.
While the development of such powerful GUI software has in many ways eased the operation of computers and made them more accessible to more people, such increasingly complex software has also increased the likelihood of programming errors, or `bugs` being introduced into the software, resulting in unexpected operation or errors. Whereas in the past software was often written by a sole individual, today's complex software suites are often written using a team model where many different software developers work together on a project with the result that often no one person has a mastery of the entire package of code. Therefore, such increased complexity has made it even more important to thoroughly test software before it is released. However, as programs have become more graphical, and as multitasking GUI's have become the standard way in which users interact with computers, additional difficulties not encountered in character based systems have become recognized.
In particular, an application running on a modern, multitasking computer system may receive input from a keyboard or another input device, such as a trackball or a mouse. The application may also be communicating with separate programs that supply additional input to the GUI application. During certain periods of operation, including those spent communicating with separate programs, a GUI application may wish to accept certain system generated input, while discarding any input generated by the user. Since, unlike operation of a character based systems, in a GUI application the output is not a string of characters, but a series of images, which may include representations of characters but which need to be managed as images and not text, the accurate and efficient testing of GUI applications can be understood to be quite difficult.
In general, the testing of GUI applications requires that the Application Under Test (AUT) be sent a series of prerecorded keyboard and mouse events, generally stored as a `script`. This test script is designed such that for every input event it is known what the correct output event should be. However, in order to ensure correct operation of the tester, the tester, X11 server and AUT must be synchronized so that events are not sent to the AUT until it is in a state where the events will be correctly processed.
An improved GUI tester which accomplished the aforenoted synchronization is disclosed in copending application Ser. No. 08/273,302, "METHOD FOR TESTING A GRAPHIC USER INTERFACE" (having the same inventor and being commonly assigned as the instant invention). In the improved system, the teachings of which are non-essential and incorporated herein by reference, the GUI tester is interposed between the X11 server and the AUT so that all communications between the user (and the X11 server) and the AUT must pass through the GUI tester. This permits the GUI tester to exercise complete control over the processing and transfer of events into and out of both the X11 server and terminal display and the AUT. By exercising such control, the improved GUI tester of the copending invention can determine with certainty the state of the display at any particular point in time during a test and, thereby, optimize the comparison of previously saved screen images to a screen image generated under test by ensuring that the display is in a known state prior to performing such a comparison.
However, an additional limitation recognized in the prior art is that although GUI testers are most frequently run in a multi programmed operating system environment where multiple GUI applications may be run at the same time, conventional GUI testers mandate that only one GUI program, and no other program of any type, be run during test, frequently requiring the dedication of a system just for test purposes and often wasting time, money and system resources.
In particular, while multi programmed operating systems are designed to allow multiple applications to run at the same time, when testing GUI program, the current state of the art requires that the GUI tester and the Application Under Test (AUT) take over the keyboard and mouse. This means that when running a GUI test the user can not interact with other applications since, if an attempt is made to use the keyboard or mouse during the test, the test will fail. For this reason, most prior art GUI testers, because they take over the keyboard and mouse, do not allow multiple GUI applications to be tested at the same time.
Recently, there has been developed an architecture which permits multiple applications to be tested at the same time. However, in order to accomplish this a special X11 server is required, which means that the computer code which is shipped after successful testing is not exactly the same as the computer code which has been tested. In addition, these multi-application testers require relinking the code of the tested program with the standard Xt library, which also increases the difference between the code tested and the code shipped.
Accordingly, it has been determined that the need exists for an improved method for testing a graphic user interface in which multiple GUI applications may be tested at the same time, in which no special X11 server is needed, in which no relinking is required and which allows other applications (including interactive applications) to run normally.